﻿///////////////////////////////////////////////////////////////////////////////
// File:        LockGuard.hpp
// Author:      671643387@qq.com
// Date:        2016年1月5日 下午5:41:34
// Description:
///////////////////////////////////////////////////////////////////////////////

#ifndef THREAD_LOCKGUARD_HPP_
#define THREAD_LOCKGUARD_HPP_

#if defined(_MSC_VER) && (_MSC_VER >= 1200)
# pragma once
#endif

#include <boost/noncopyable.hpp>

namespace fog
{
    namespace thread
    {
        template<typename LockType>
        class LockGuard : public boost::noncopyable
        {
        public:
            explicit LockGuard(LockType &l)
                : lock_(l)
            {
                lock_.lock();
            }

            ~LockGuard(void)
            {
                lock_.unlock();
            }

        private:
            LockType &lock_;
        };
    }
}

#endif /* THREAD_LOCKGUARD_HPP_ */
